home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1994 November: Tool Chest / Dev.CD Nov 94.toast / Tool Chest / !Interfaces / Universal Interfaces 2.0a1 / CIncludes / float.h < prev    next >
Encoding:
C/C++ Source or Header  |  1994-07-17  |  2.8 KB  |  103 lines  |  [TEXT/MPS ]

  1. /************************************************************
  2.  
  3.     Float.h
  4.     Characteristics of floating-point types
  5.     
  6.     Copyright Apple Computer,Inc.  1987-1990, 1993-1994
  7.     All rights reserved
  8.  
  9. ************************************************************/
  10.  
  11. /* Conditional Macros:
  12.  *    UsingStaticLibs    - for CFM-68K:  Insures that #pragma lib_export is never used.
  13.  *    UsingSharedLibs    - for CFM-68K:  Insures that all functions and data items are
  14.  *                                    marked as exported
  15.  *    <none>            - for CFM-68K:    Data items are exported using #pragma lib_export,
  16.  *                                    functions are not.  Causes excess code to be
  17.  *                                    generated for data references to static libraries
  18.  *                                    and causes the linker to generate glue for
  19.  *                                    references to shared library routines.
  20.  *    The preceeding macros may not both be defined in the same compilation.
  21.  */
  22. #if defined (UsingStaticLibs) && defined (UsingSharedLibs)
  23.     #error "Only one of the conditional macros 'UsingStaticLibs' and 'UsingSharedLibs' may be defined in a compilation"
  24. #endif
  25.  
  26.  
  27. #ifndef __FLOAT__
  28. #define __FLOAT__
  29.  
  30.  
  31. #define    DBL_DIG                15
  32. #define    DBL_MANT_DIG        53
  33. #define    DBL_MAX_10_EXP        308
  34. #define    DBL_MAX_EXP            1024
  35. #define    DBL_MIN_10_EXP        (-307)
  36. #define    DBL_MIN_EXP            (-1021)
  37.  
  38. #define    FLT_DIG                7
  39. #define    FLT_MANT_DIG        24
  40. #define    FLT_MAX_10_EXP        38
  41. #define    FLT_MAX_EXP            128
  42. #define    FLT_MIN_10_EXP        (-37)
  43. #define    FLT_MIN_EXP            (-125)
  44.  
  45. #define    FLT_RADIX            2
  46. #define    FLT_ROUNDS            1
  47.  
  48. #ifdef powerc
  49.     #define    LDBL_DIG            15
  50.     #define    LDBL_MANT_DIG        53
  51.     #define    LDBL_MAX_10_EXP        308
  52.     #define    LDBL_MAX_EXP        1024
  53.     #define    LDBL_MIN_10_EXP        (-307)
  54.     #define    LDBL_MIN_EXP        (-1021)
  55. #else
  56.     #define    LDBL_DIG            19
  57.     #define    LDBL_MANT_DIG        64
  58.     #define    LDBL_MAX_10_EXP        4932
  59.     #define    LDBL_MAX_EXP        16384
  60.     #define    LDBL_MIN_10_EXP        (-4931)
  61.     #define    LDBL_MIN_EXP        (-16382)
  62. #endif
  63.  
  64. #define    DBL_EPSILON            (*(double *)_DBL_EPSILON)
  65. #define DBL_MAX                (*(double *)_DBL_MAX)
  66. #define DBL_MIN                (*(double *)_DBL_MIN)
  67. #define    FLT_EPSILON            (*(float *)_FLT_EPSILON)
  68. #define FLT_MAX                (*(float *)_FLT_MAX)
  69. #define FLT_MIN                (*(float *)_FLT_MIN)
  70.  
  71. #if defined(mc68881) || defined(powerc)
  72.     #define    LDBL_EPSILON        (*(long double *)_LDBL_EPSILON)
  73.     #define LDBL_MAX            (*(long double *)_LDBL_MAX)
  74.     #define LDBL_MIN            (*(long double *)_LDBL_MIN)
  75. #else
  76.     #define    LDBL_EPSILON        (*(long double *)(_LDBL_EPSILON+1))
  77.     #define LDBL_MAX            (*(long double *)(_LDBL_MAX+1))
  78.     #define LDBL_MIN            (*(long double *)(_LDBL_MIN+1))
  79. #endif
  80.  
  81. #ifdef __CFM68K__
  82.     #ifndef UsingStaticLibs
  83.         #pragma lib_export on
  84.     #endif
  85. #endif
  86. extern int _DBL_EPSILON[];
  87. extern int _DBL_MAX[];
  88. extern int _DBL_MIN[];
  89. extern int _FLT_EPSILON[];
  90. extern int _FLT_MAX[];
  91. extern int _FLT_MIN[];
  92. extern short _LDBL_EPSILON[];
  93. extern short _LDBL_MAX[];
  94. extern short _LDBL_MIN[];
  95.  
  96. #ifdef __CFM68K__
  97.     #ifndef UsingStaticLibs
  98.         #pragma lib_export off
  99.     #endif
  100. #endif
  101.  
  102. #endif
  103.